home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 8: LINUX Games / Linux Cubed Series 8 - LINUX Games.iso / games / video / thrust-s.53 / thrust-s / thrust / datasrc / txt2c.c < prev   
C/C++ Source or Header  |  1995-10-13  |  2KB  |  106 lines

  1.  
  2. /* Written by Peter Ekberg, peda@lysator.liu.se */
  3.  
  4. #include <unistd.h>
  5. #include <sys/types.h>
  6. #include <stdio.h>
  7.  
  8. #define BUFSIZE (2050)
  9.  
  10. char buf[BUFSIZE];
  11.  
  12. void quit(char *str)
  13. {
  14.   perror(str);
  15.   exit(1);
  16. }
  17.  
  18. int writebuf(int flag)
  19. {
  20.   int stat,len,i;
  21.   char out[3];
  22.   
  23.   if(!flag) {
  24.     if(printf("\"") != 1)
  25.       return(1);
  26.     len=strlen(buf);
  27.     if(len)
  28.       if(buf[len-1]=='\n')
  29.     buf[--len]=0;
  30.     for(i=0; i<len; i++) {
  31.       switch(buf[i]) {
  32.       case '\t':
  33.     strcpy(out,"\\t");
  34.     break;
  35.       case '\b':
  36.     strcpy(out,"\\b");
  37.     break;
  38.       case '\f':
  39.     strcpy(out,"\\f");
  40.     break;
  41.       case '\'':
  42.     strcpy(out,"\\\'");
  43.     break;
  44.       case '\"':
  45.     strcpy(out,"\\\"");
  46.     break;
  47.       case '\\':
  48.     strcpy(out,"\\\\");
  49.     break;
  50.       default:
  51.     out[0]=buf[i];
  52.     out[1]=0;
  53.       }
  54.       stat=fputs(out,stdout);
  55.       if(stat==EOF)
  56.     return(1);
  57.       if(stat<0)
  58.     return(1);
  59.     }
  60.     if(printf("\"") != 1)
  61.       return(1);
  62.   }
  63.   else {
  64.     if(printf("NULL") != 4)
  65.       return(1);
  66.   }
  67.  
  68.   return(0);
  69. }
  70.  
  71. int main(int argc, char *argv[])
  72. {
  73.   char *stat;
  74.   int end=0;
  75.  
  76.   if(argc!=2) {
  77.     fprintf(stderr, "%s: Usage '%s variable_name'\n",
  78.         argv[0],
  79.         argv[0]);
  80.     exit(1);
  81.   }
  82.   if(printf("\n#include <stddef.h>\n\nchar *%s[] = {\n", argv[1]) != (35 + strlen(argv[1])))
  83.     quit(argv[0]);
  84.  
  85.   while(!end) {
  86.     stat=fgets(buf, BUFSIZE, stdin);
  87.     if(stat==NULL) {
  88.       if(ferror(stdin))
  89.     quit(argv[0]);
  90.       end=1;
  91.       if(writebuf(1))
  92.     quit(argv[0]);
  93.     }
  94.     else {
  95.       if(writebuf(0))
  96.     quit(argv[0]);
  97.       if(printf(",\n") != 2)
  98.     quit(argv[0]);
  99.     }
  100.   }  
  101.   if(printf(" };\n") != 4)
  102.     quit(argv[0]);
  103.  
  104.   return(0);
  105. }
  106.